﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using itau.im.entidade;
using System.Collections;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.dado
{
    #region Código Gerado Pela Fábrica de Software (Interface)
    /// <summary>
    /// **************************************************************************************************<BR/>
    /// AUTOR           : Fábrica de Software                                                             <BR/>
    /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
    /// ALTERADO POR    :                                                                                 <BR/>
    /// DATA ALTERAÇÃO  :                                                                                 <BR/>
    /// OBJETIVO        : Interface "IGrupoParametrosDAO".                                                <BR/>
    /// **************************************************************************************************<BR/>
    /// </summary>
    public interface IGrupoParametrosDAO
    {
        #region Código Gerado Pela Fábrica de Software (Métodos)

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarProdutoFinanceiroAlocacao                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        void CriarProdutoFinanceiroAlocacao(ProdutoFinanceiroAlocacao produtoFinanceiroAlocacao);

      /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 06/09/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método AtualizarParametroAtribuicaoGrupoAlocacao.                               <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        void AtualizarParametroAtribuicaoGrupoAlocacao(ParametroAtribuicaoGrupoAlocacao parametroAtribuicaoGrupoAlocacao);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Parametros Atribuicao Por Grupo Vigente                                   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de ParametroAtribuicao</returns>
        IList<ParametroAtribuicao> ObterParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para remover uma GrupoParametroAtribuicao.                            <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        void RemoverGrupoParametroAtribuicao(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para remover uma GrupoParametroAtribuicao.                            <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        void RemoverGrupoParametroAtribuicaoLogica(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para atualizar um ProdutoFinanceiroAlocacao.       <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiroAlocacao">ProdutoFinanceiroAlocacao</param>
        void AtualizarProdutoFinanceiroAlocacao(ProdutoFinanceiroAlocacao produtoFinanceiroAlocacao);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarGrupoParametros                                                     <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        int CriarGrupoParametros(GrupoParametroAtribuicao grupoParametro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Retorna uma Lista de ParametroAtribuicaoGrupoAlocacao</returns>
        IList<ParametroAtribuicaoGrupoAlocacao> ObterParametrosAtribuicaoGrupoAlocacaoPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 26/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterProdutosFinanceirosNaoAlocados                                      <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosNaoAlocados();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Produtos Financeiros Por Grupo Paramostros Vigente                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de ProdutoFinanceiro</returns>
        IList<ProdutoFinanceiro> ObterProdutosFinanceirosPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 31/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo"></param>
        /// <returns>Retorna uma Lista de objetos do tipo ProdutoFinanceiro</returns>
        IList<ProdutoFinanceiro> ObterProdutosExcecaoPorGrupoParametrosVigente(int codigoGrupo);

        IList<ProdutoFinanceiroDerivado> ObterProdutosFinanceirosDerivadosExcecaoPorGrupoParametrosVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Dominios Parametros Atribuicao Por Grupo Vigente                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de DominiosParametroAtribuicao</returns>
        IList<DominioParametroAtribuicao> ObterDominiosParametrosAtribuicaoPorGrupoVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterGruposDeParametros.                                                 <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "GrupoParametroAtribuicao".</returns>
        IList<GrupoParametroAtribuicao> ObterGruposDeParametros();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 24/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para obter numero parametro.                       <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        int ObterNumeroParametroAtribuicaoGrupoAlocacaoPorCodigoDominio(int codigoDominio);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarParametroAtribuicaoGrupoAlocacao                                    <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="parametroAlocacao">Objeto do tipo ParametroAtribuicaoGrupoAlocacao</param>
        void CriarParametroAtribuicaoGrupoAlocacao(ParametroAtribuicaoGrupoAlocacao parametroAlocacao);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 26/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Parametros Nao Alocados Por Grupo Parametro Vigente                       <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <returns>Lista de ParametroAtribuicao</returns>
        IList<ParametroAtribuicao> ObterParametrosNaoAlocadosPorGrupoParametroVigente(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 26/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Numero Parametros Atribuicao Grupo Alocacao Por Codigo Parametro          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoParametro">codigoParametro</param>
        /// <returns>valor inteiro codigo Parametro</returns>
        int ObterNumeroParametrosAtribuicaoGrupoAlocacaoPorCodigoParametro(int codigoParametro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/10/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método Obter Regras                                                             <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoGrupo">codigoGrupo</param>
        /// <param name="dataInclusaoVigencia">dataInclusaoVigencia</param>
        /// <returns>Lista de RegraAtribuicaoCurva</returns>
        IList<RegraAtribuicaoCurva> ObterRegras(int codigoGrupo, DateTime dataInclusaoVigencia);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/10/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="objProdutoFinanceiroDerivado">ProdutoFinanceiroDerivado</param>
        /// <param name="dataInicioVigencia">DateTime</param>
        /// <returns>Codigo Grupo Parametro Atribuicao</returns>
        int ObterCodigoGrupoParametroAtribuicao(ProdutoFinanceiroDerivado objProdutoFinanceiroDerivado, DateTime dataInicioVigencia);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 11/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para obter um produto financeiro                   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="objProdutoFinanceiroDerivado">ProdutoFinanceiroDerivado</param>
        /// <returns>Lista de Produto Financeiro Alocacao </returns>
        IList<ProdutoFinanceiroAlocacao> ObterProdutoFinanceiroAlocacaoPorProdutoDerivado(ProdutoFinanceiroDerivado objProdutoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Integração                                                                      <BR/>
        /// DATA DE CRIAÇÃO : 10/02/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para remover produtos financeiros alocações        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="objProdutoFinanceiroDerivado">codigoGrupo</param>
        /// <returns>void</returns>
        void RemoverProdutoFinanceiroAlocacoes(int codigoGrupo);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Integração                                                                      <BR/>
        /// DATA DE CRIAÇÃO : 10/02/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para remover parametros atribuição                 <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="objProdutoFinanceiroDerivado">codigoGrupo</param>
        /// <returns>void</returns>
        void RemoverParametroAtribuicaoGrupoAlocacoes(int codigoGrupo);

        IList<ProdutoFinanceiroAlocacao> ObterProdutoFinanceiroAlocacaoPorGrupoParametro(int codigoGrupoParametro);

        #endregion
    }
    #endregion
}
#endregion
